package com.sz.biz.logistics.ord.service;

import com.sz.common.base.dto.QueryParams;
import com.sz.common.base.dto.ResultDto;
import com.sz.biz.logistics.ord.entity.OrdOrderFile;
import com.sz.biz.logistics.ord.entity.OrdOrderFileTypeEnum;
import com.sz.biz.logistics.ord.entity.OrderStatus;
import com.sz.biz.logistics.ord.dto.OrdOderFileTypeDto;
import com.sz.biz.logistics.ord.dto.OrdOrderFileDto;

import java.util.List;

/**
 * Package: com.sz.biz.logistics.ord.service<br>
 * Function: 订单附件service </br>
 * Author: yanhong.xiao.<br>
 * Date: 2017-08-07 11:26:00.
 */
public interface OrdOrderFileService {


    List<OrdOderFileTypeDto> queryOrderFileTypes(OrdOrderFileTypeEnum fileType);

    /**
     * 保存文件列表
     *
     * @param fileDtoList
     */
    void saveOrdFiles(Integer createUserType,String orderNo, OrderStatus orderStatus, List<OrdOrderFileDto> fileDtoList);


    Boolean checkFile(OrderStatus orderStatus, List<OrdOrderFileDto> fileDtoList);
    /**
     * 检验文件名的唯一性
     *
     * @param fileDtoList
     * @return
     */
    Boolean checkUniqueName(List<OrdOrderFileDto> fileDtoList);

    /**
     *
     * @param orderStatus：订单的状态
     * @param fileDtoList:附件
     * @return
     */
    Boolean checkFileStatus(OrderStatus orderStatus, List<OrdOrderFileDto> fileDtoList);

    /**
     * 检验文件名的唯一性
     *
     * @param orderNo
     * @param fileName
     * @return
     */
    Boolean checkUniqueName(String orderNo, String fileName);

    Boolean batchAddOrderFiles(String orderNo, List<OrdOrderFileDto> fileDtoList);

    List<OrdOrderFile> queryByOrderNo(String orderNo);

    Integer addOrderFileDto(OrdOrderFileDto fileDto);

    void deleteOrderFile(String orderNo, Integer orderFileId, String userType);

    OrdOrderFile findById(Integer orderFileId);

    /**
     * 分页获取附件
     *
     * @param params
     * @return
     */
    ResultDto findFileDtoPages(QueryParams params);

    /**
     * 获取订单的附件-文件
     * @param orderFileId
     * @return
     */
    OrdOrderFileDto getByOrderFileId(Integer orderFileId);

    /**
     * 根据订单号，更新订单号
     * @param oldOrderNo
     * @param newOrderNo
     */
    void updateOrderNoByOrderNo(String oldOrderNo, String newOrderNo);

    void batchSaveOrderFiles(List<OrdOrderFile> ordOrderFiles);
}
